/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author diego
 */
@Entity
@Table(name = "Empleado")
public class Empleado implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Basic(optional = false)
    @Column(name = "idEmpleado")
    private Integer idEmpleado;
    @Column(name = "antiguedad")
    private Integer antiguedad;
    @Column(name = "apellido")
    private String apellido;
    @Column(name = "cuit")
    private String cuit;
    @Column(name = "tipoDU")
    private String tipoDU;
    @Column(name = "email")
    private String email;
    @Column(name = "estadoCivil")
    private String estadoCivil;
    @Column(name = "fechaAltaEmpleado")
    @Temporal(TemporalType.DATE)
    private Date fechaAltaEmpleado;
    @Column(name = "fechaBajaEmpleado")
    @Temporal(TemporalType.DATE)
    private Date fechaBajaEmpleado;
    @Column(name = "fechaNacimiento")
    @Temporal(TemporalType.DATE)
    private Date fechaNacimiento;
    @Column(name = "legajoEmpleado")
    private String legajoEmpleado;
    @Column(name = "nacionalidad")
    private String nacionalidad;
    @Column(name = "nombre")
    private String nombre;
    @Column(name = "sexo")
    private String sexo;
    @Column(name = "tel")
    private String tel;
    @Column(name = "nroDU")
    private String nroDU;
    @Column(name = "vigente")
    private Boolean vigente;
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "idEmpleado")
    private Biometria bio;
    @JoinColumn(name = "idOficina", referencedColumnName = "idOficina")
    @ManyToOne(optional = false)
    private Oficina idOficina;
    @JoinColumn(name = "idDomicilio", referencedColumnName = "idDomicilio")
    @ManyToOne(optional = false)
    private Domicilio idDomicilio;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEmpleado")
    private List<Asistencia> asistenciaLista;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEmpleado")
    private List<Marcada> marcadaLista;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEmpleado")
    private List<Licencia> licenciaLista;
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "idEmpleado")
    private Usuario usuario2;
    @OneToMany(mappedBy = "idEmpleado")
    private List<EmpleadoJornada> ejLista;

    public Biometria getBio() {
        return bio;
    }

    public void setBio(Biometria biometria) {
        this.bio = biometria;
    }

    public List<Asistencia> getAsistenciaLista() {
        return asistenciaLista;
    }

    public void setAsistenciaLista(List<Asistencia> asistenciaLista) {
        this.asistenciaLista = asistenciaLista;
    }

    public List<Marcada> getMarcadaLista() {
        return marcadaLista;
    }

    public void setMarcadaLista(List<Marcada> marcadaLista) {
        this.marcadaLista = marcadaLista;
    }

    public List<Licencia> getLicenciaLista() {
        return licenciaLista;
    }

    public void setLicenciaLista(List<Licencia> licenciaLista) {
        this.licenciaLista = licenciaLista;
    }

    public List<EmpleadoJornada> getEjLista() {
        return ejLista;
    }

    public void setEjLista(List<EmpleadoJornada> ejLista) {
        this.ejLista = ejLista;
    }

    public Empleado() {
    }

    public Empleado(Integer idEmpleado) {
        this.idEmpleado = idEmpleado;
    }

    public Integer getIdEmpleado() {
        return idEmpleado;
    }

    public void setIdEmpleado(Integer idEmpleado) {
        this.idEmpleado = idEmpleado;
    }

    public Integer getAntiguedad() {
        return antiguedad;
    }

    public void setAntiguedad(Integer antiguedad) {
        this.antiguedad = antiguedad;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getCuit() {
        return cuit;
    }

    public void setCuit(String cuit) {
        this.cuit = cuit;
    }

    public String getTipoDU() {
        return tipoDU;
    }

    public void setTipoDU(String tipoDU) {
        this.tipoDU = tipoDU;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public Date getFechaAltaEmpleado() {
        return fechaAltaEmpleado;
    }

    public void setFechaAltaEmpleado(Date fechaAltaEmpleado) {
        this.fechaAltaEmpleado = fechaAltaEmpleado;
    }

    public Date getFechaBajaEmpleado() {
        return fechaBajaEmpleado;
    }

    public void setFechaBajaEmpleado(Date fechaBajaEmpleado) {
        this.fechaBajaEmpleado = fechaBajaEmpleado;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getLegajoEmpleado() {
        return legajoEmpleado;
    }

    public void setLegajoEmpleado(String legajoEmpleado) {
        this.legajoEmpleado = legajoEmpleado;
    }

    public String getNacionalidad() {
        return nacionalidad;
    }

    public void setNacionalidad(String nacionalidad) {
        this.nacionalidad = nacionalidad;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getNroDU() {
        return nroDU;
    }

    public void setNroDU(String nroDU) {
        this.nroDU = nroDU;
    }

    public Oficina getIdOficina() {
        return idOficina;
    }

    public void setIdOficina(Oficina idOficina) {
        this.idOficina = idOficina;
    }

    public Domicilio getIdDomicilio() {
        return idDomicilio;
    }

    public void setIdDomicilio(Domicilio idDomicilio) {
        this.idDomicilio = idDomicilio;
    }

    public List<Marcada> getMarcadaCollection() {
        return marcadaLista;
    }

    public void setMarcadaCollection(List<Marcada> marcadaCollection) {
        this.marcadaLista = marcadaCollection;
    }

    public Usuario getUsuario2() {
        return usuario2;
    }

    public void setUsuario2(Usuario usuario2) {
        this.usuario2 = usuario2;
    }

    public Boolean getVigente() {
        return vigente;
    }

    public void setVigente(Boolean vigente) {
        this.vigente = vigente;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idEmpleado != null ? idEmpleado.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Empleado)) {
            return false;
        }
        Empleado other = (Empleado) object;
        if ((this.idEmpleado == null && other.idEmpleado != null) || (this.idEmpleado != null && !this.idEmpleado.equals(other.idEmpleado))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return apellido + ", " + nombre;
    }
}
